// 1. 导入 mysql 模块
const mysql = require('mysql');
// 2. 建立与 MySQL 数据库的连接关系
const db = mysql.createPool({
    user: 'root',
    password: 'root',
    host: '192.168.20.130',
    // port:3306,
    database: 'test_db'
})
// ER_NOT_SUPPORTED_AUTH_MODE: Client does not support authentication protocol requested by server; consider upgrading MySQL client
// https://blog.csdn.net/leilei__66/article/details/110674462
// db.query('select 1',(err,result)=>{
//     if(err){
//         return console.log(err.message)
//     }
//     console.log(result)
// })

const user = {username: '吊毛12111', password: '222222'}
// 向 users 表中，新增一条数据，其中 username 的值为 吊毛12311，password 的值为 222222
// db.query('insert into users(username,password) values(?,?)', [user.username,user.password], (err,result)=>{
//     if(err){
//         return console.log(err.message)
//     }
// 注意：如果执行的是 insert into 插入语句，则 results 是一个对象
// 可以通过 affectedRows 属性，来判断是否插入数据成功
//     console.log(result.affectedRows, result)
// })

// db.query('insert into users set ?', user, (err,result)=>{
//     if(err){
//         return console.log(err.message)
//     }
//     console.log(result.affectedRows, result)
// })

// db.query('update users set username=?,password=? where id=?', [user.username,user.password,2], (err,result)=>{
//     if(err){
//         return console.log(err.message)
//     }
//     // 注意：执行了 update 语句之后，执行的结果，也是一个对象，可以通过 affectedRows 判断是否更新成功
//     console.log(result)
// })

// 演示更新数据的便捷方式
// db.query('update users set ? where id=?',[user,2],(err,results)=>{
//     if(err){
//         return console.log(err.message)
//     }
//     console.log('更新数据成功',results)
// })

// 删除 id 为 5 的用户
// db.query('delete from users where id=?',[2],(err,results)=>{
//     if (err) return console.log(err.message)
//     // 注意：执行 delete 语句之后，结果也是一个对象，也会包含 affectedRows 属性
//     console.log('删除数据成功',results)
// })

// 查询 users 表中所有的数据
// db.query('select * from users',(err,results)=>{
//     if (err) return console.log(err.message)
//     console.log('查询数据成功')
//     for (let v in results){
//         for (let vv in results[v]) {
//             console.log(vv,'=',results[v][vv])
//         }
//         console.log()
//     }
// })

let query = (sql, values) => {
    return new Promise((resolve, reject) => {
        db.getConnection((err, conn) => {
            if (err) return reject(err)
            conn.query(sql, values, (err, rows) => {
                if (err) {
                    reject(err)
                } else {
                    resolve(rows)
                }
                // 结束会话
                conn.release()
            })
        })
    })
}

async function my() {
    const a = await query('select * from users')
    console.log(a)
}

my()
